<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>博客编辑</title>

    <!-- 引入自己写的样式 -->
    <link rel="stylesheet" href="css/conmmon.css">
    <link rel="stylesheet" href="css/blog_edit.css">

    <!-- 引入 editor.md 的依赖 -->
    <link rel="stylesheet" href="editor.md/css/editormd.min.css" />
    <script src="js/jquery.min.js"></script>
    <script src="editor.md/editormd.js"></script>

    <!-- 引入js -->
    <script src="js/urltools.js"></script>
    <script src="js/logout.js"></script>
</head>

<body>
    <!-- 导航栏 -->
    <div class="nav">
        <img src="img/logo2.jpg" alt="">
        <span class="title">我的博客系统</span>
        <!-- 用来占据中间位置 -->
        <span class="spacer"></span>
        <a href="blog_list.html">主页</a>

        <!-- 注意正常的话是一个跳转的地址，我们此处用的是一个方法，所以要加特定格式 javascript: 方法名() -->
        <!-- 注意此处是有 "" 的 -->
        <a href="javascript:logout()">注销</a>
    </div>
    <!-- 编辑框容器 -->
    <div class="blog-edit-container">
        <!-- 标题编辑区 -->
        <div class="title">
            <!-- <input type="text" placeholder="在这里写下文章标题"> -->
            <!-- 加上一个id -->
            <input id="title" type="text" placeholder="在这里写下文章标题">
            <button onclick="mysub()">发布文章</button>
        </div>
        <!-- 创建编辑器标签 -->
        <div id="editorDiv">
            <textarea id="editor-markdown" style="display:none;"></textarea>
        </div>
    </div>

    <script>
        // 定义一个标志位,1就是允许提交
        var isSubmit = 1; 
        var id = 0; // 默认id为0
        var editor;
        function initEdit(md){
            // 编辑器设置
            editor = editormd("editorDiv", {
                // 这里的尺寸必须在这里设置. 设置样式会被 editormd 自动覆盖掉. 
                width: "100%",
                // 高度 100% 意思是和父元素一样高. 要在父元素的基础上去掉标题编辑区的高度
                height: "calc(100% - 50px)",
                // 编辑器中的初始内容
                markdown: md,
                // 指定 editor.md 依赖的插件路径
                path: "editor.md/lib/",
                saveHTMLToTextarea: true // 
            });
        }
        // initEdit("# 在这里写下一篇博客"); // 初始化编译器的值

        // 接口1：先去查询当前文章的信息进行展示
        function initArt() {
            id = getParamByKey("id");
            if(id == null && id <= 0) {
                alert("id参数有误，id不对");
                // 执行 return false之后，后面的前端代码就不会走了，直接这个方法就是直接结束
                return false;
            }

            // 向后端传递参数
            jQuery.ajax({
                url: "/art/getdetailbyid",
                type: "POST", // 除了查询是 get ， 其他的都是post
                data: {
                    "id": id
                },
                success:function(res) {
                    if(res.code == 200 && res.data != null && res.data.id > 0) { // 传递过来的是一个对象，里面有id
                        //文章查询成功,把查询到的标题和文章 返回到页面上
                        // 赋值的话，直接在 val（）里面设置就行了
                        jQuery("#title").val(res.data.title);
                        initEdit(res.data.content);
                        
                    } else {
                        // 参数有误
                        isSubmit = 0;
                        alert("抱歉：非法参数！");
                        // 回调函数不用 return
                    }
                }
            });
        }

        initArt(); // 别忘了调用 // 页面加载时，触发接口1

        // 接口2：提交修改操作
        function mysub(){
            // alert(editor.getValue()); // 获取值
            // editor.setValue("#123") // 设置值
            if(isSubmit == 0) {
                alert("非法参数,请刷新当前页面重试");
                return false;
            } 
            // 1.非空校验 和 blog_add.html 中的非空校验是一样的
            var title1 = jQuery("#title");
            // 2.进行非空判断
            if(title1.val().trim() == "") {
                alert("请先输入标题");
                title1.focus();
                return false;
            }

            // var content1 = jQuery("#editorDiv");

            var content1 = editor.getValue(); //这个方法是markdown自带的api，用于获取文章里面的内容
            // 2.进行非空判断
            if(content1 == "") {
                alert("请先输入正文");
                content1.focus();
                return false;
            }
            jQuery.ajax({
                url:"/art/update",
                type:"POST",  //查询的时候是get,其余都是post
                data:{
                    "id": id,
                    "title":  title1.val(), // 获取控件中的值，用到val(),下面 content1 本身就是获取到中间的值
                    "content": content1
                },
                success:function(res) {
                    if(res.code == 200 && res.data == 1) { // 修改返回受影响的行数，所以这里判断是不是1即可
                    // 修改成功，然后调转到列表页中去
                    alert("修改成功");
                    // 注意这里是 = 号 ，不是：号
                    location.href = "myblog_list.html";
                    } else {
                        alert("修改失败,请重试");
                    }
                }
            });
        }



        // 有了这个 <a href="javascript:logout()">注销</a> ， 就不用调用也会触发这个方法
        // function logout() {
        //     if(confirm("是否要退出")) {
        //         //alert("退出成功");
        //         jQuery.ajax({
        //             url: "/user/logout",
        //             type: "POST",
        //             data: {},
        //             success: function(res) {
        //                 if(res.code == 200 && res.data == 1) {// 相当于是删除会话操作，约定成功返回1
        //                     alert("注销成功");
        //                     // 然后跳转到列表页，每个人都能看到，也可以看到别人的
        //                     location.href = "blog_list.html";
        //                 } else {
        //                     alert("操作失败" + res.msg);
        //                     // 回调函数不需要进行 return 操作
        //                 }
        //             }
        //         });
        //     }
        // }

    </script>
</body>

</html>